package algo_annotations.heuristique;

import algo_annotations.data.sites.SousGroupeSite;

// Représente les infos nécessaire au traitement complet automatique d'un sous-groupe d'annotations
public class TraitementSousGroupe {

	public SousGroupeSite sgs;
	public int tailleVivier;
	public int nbIter;
	public int numIter;
	public double currentNote;

	// Meme si les TraitementSousGroupe sont tous déterminé avant le calcul automatique,
	//  le vivier de chacun est créé juste avant le début du calcul, pour des raisons d'espace memoire
	public Vivier vivier;
	
	// Paramètres de modification du Vivier
	public Evolution evolMUTATION;
	public Evolution evolCROSSOVER;
	public Evolution evolTAKEBEST;
	public Evolution evolADJUST;

	// un int ne suffira peut etre pas à sommer tous les calculs elementaires de tous les Traitement, donc on travaille en double
	public double getNbCalculsElementaires_1Iter() {
		return sgs.size() * tailleVivier;
	}
	public double getNbCalculsElementaires_Total_pondere() {
		// on rajoute un temps fixe lié au nombre d'itération (facteur 8000 totalement pifométrique ...)
		return getNbCalculsElementaires_1Iter() * nbIter  +  8000 * nbIter;
	}


	@Override
	public String toString() {return sgs.toString();}
	
	// aide le gc
	public void dispose() {
		vivier.dispose();
		vivier=null;
		evolMUTATION = null;
		evolCROSSOVER = null;
		evolTAKEBEST = null;
		evolADJUST = null;
	}

}
